Representational state transfer (REST) is a design pattern for client-server architectures. Architectures embodying REST principles may be referred to as being “RESTful.” In REST, clients send requests to servers, and servers return responses to clients. Requests and responses relate to the transfer of representations of resources. A resource may be any coherent and meaningful concept that may be addressed by a uniform resource identifier (URI). A representation of a resource may be, for example, a document that captures the current or intended state of the resource. One example of a RESTful architecture is hypertext transfer protocol (HTTP).
REST is a stateless architecture, where no client context is stored on the server between requests. Server-side state may be addressed as a resource. As with resources on the World Wide Web, REST resources are also cacheable. REST also provides a layered system that may facilitate load-balancing and shared caches. The uniform interface of REST enables each part to be developed independently. REST is distinguished from web services, simple object access protocol (SOAP), and remote procedure call (RPC) in that the latter are procedure oriented while REST is data oriented. Compared to service-oriented architectures, REST architectures may be more scalable and easier to maintain.